/*
 * @Author: lll 1280388921@qq.com
 * @Date: 2025-04-19 16:07:36
 * @LastEditors: lll 1280388921@qq.com
 * @LastEditTime: 2025-04-19 23:23:36
 * @FilePath: /lesson31/signal/mysignal.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include<iostream>
#include<unistd.h>
#include<signal.h>
#include<sys/types.h>
#include<string>
#include<cstdlib>
#include<cstring>

using namespace std;

void Handler(int signum)
{
    cout<<"process get a signal: "<<signum<<endl;
}

int main()
{
    signal(6,Handler);
    int cnt=0;
    while(1)
    {
        cout<<"I am a process,pid: "<<getpid()<<endl;
        sleep(1);
        if(cnt%2==0)
        {
            // raise(2);
            // abort();
        }
        cnt++;
    }
    return 0;
}

// void Usage(string proc)
// {
//     cout<<"Usage:\n\t"<<proc<<" signum pid\n"<<endl;
// }

// //mykill signum pid
// int main(int argc,char*argv[])
// {
//     if(argc!=3)
//     {
//         Usage(argv[0]);
//         exit(1);
//     }
//     int signum=stoi(argv[1]);
//     int pid=stoi(argv[2]);

//     int n=kill(pid,signum);
//     if(n==-1)
//     {
//         perror("kill");
//     }
//     return 0;
// }


//int signum: 收到了哪个信号
// void Handler(int signum)
// {
//     cout<<"process get a signal: "<<signum<<endl;
// }

// int main()
// {
//     // signal(SIGINT,Handler);
//     // signal(3,Handler);
//     //只需要设置一次，在进程生命周期内都有效。
//     for(int i=1;i<=31;i++)
//     {
//         signal(i,Handler);
//     }

//     while(1)
//     {
//         cout<<"I am a crazy process,pid: "<<getpid()<<endl;
//         sleep(2);
//     }
//     return 0;
// }